#include "mycppitem.h"

/*!
    \qmltype Item
    \brief 一个自定义的QML类型，用于展示和操作一个矩形。
    \inqmlmodule QDocDemoTest
    \instantiates MyCppItem
    \since 1.0

    MyCppItem是一个自定义的QML类型，用于展示和操作一个矩形。
    它提供了位置、大小和颜色等属性，并且可以在QML中进行绑定和操作。
*/

/*!
    \qmlsignal Item::xPosChanged

    发送x轴改变的信号
*/

/*!
    \qmlsignal Item::yPosChanged

    发送y轴改变的信号
*/

/*!
    \qmlsignal Item::itemWidthChanged

    发送宽度改变的信号
*/

/*!
    \qmlsignal Item::itemHeightChanged

    发送高度改变的信号
*/
MyCppItem::MyCppItem(QQuickItem *parent) : QQuickItem(parent)
{
    setX(m_xPos);
    setY(m_yPos);
    setWidth(m_itemWidth);
    setHeight(m_itemHeight);
}

/*!
    \qmlproperty int Item::xPos

    \brief 矩形的X轴位置.
    \default 0
    \sa yPos, itemWidth, itemHeight, itemColor
*/

int MyCppItem::xPos() const
{
    return m_xPos;
}

void MyCppItem::setXPos(int x)
{
    if (m_xPos != x) {
        m_xPos = x;
        setX(x);
        emit xPosChanged();
    }
}
/*!
    \qmlproperty int Item::yPos

    \brief 矩形的Y轴位置.
    \default 0
    \sa xPos, itemWidth, itemHeight, itemColor
*/
int MyCppItem::yPos() const
{
    return m_yPos;
}

void MyCppItem::setYPos(int y)
{
    if (m_yPos != y) {
        m_yPos = y;
        setY(y);
        emit yPosChanged();
    }
}

/*!
    \qmlproperty int Item::itemWidth

    \brief 矩形的宽度.
    \default 100
    \sa xPos, yPos, itemHeight
*/
int MyCppItem::itemWidth() const
{
    return m_itemWidth;
}

void MyCppItem::setItemWidth(int width)
{
    if (m_itemWidth != width) {
        m_itemWidth = width;
        setWidth(width);
        emit itemWidthChanged();
    }
}
/*!
    \qmlproperty int Item::itemHeight

    \brief 矩形的高度.
    \default 100
    \sa xPos, yPos, itemWidth
*/

int MyCppItem::itemHeight() const
{
    return m_itemHeight;
}

void MyCppItem::setItemHeight(int height)
{
    if (m_itemHeight != height) {
        m_itemHeight = height;
        setHeight(height);
        emit itemHeightChanged();
    }
}

QColor MyCppItem::itemColor() const
{
    return m_itemColor;
}

void MyCppItem::setItemColor(const QColor &color)
{
    if (m_itemColor != color) {
        m_itemColor = color;
        update(); // 触发重绘
        emit itemColorChanged();
    }
}
